# ===== 6-8.1 =====
class Parent:
    """这是一个父类"""

    def __init__(self, name):
        self.name = name

    def greet(self):
        return f"你好，我是{self.name}"


class Child(Parent):
    """这是一个子类，继承自Parent类"""

    def __init__(self, name, age):
        # 调用父类的初始化方法
        super().__init__(name)
        # 添加子类特有的属性
        self.age = age

    def introduce(self):
        return f"{self.greet()}，今年{self.age}岁"


# ===== 6-8.1 =====
# 创建实例
parent = Parent("张三")
child = Child("李四", 10)

# 使用isinstance()检查对象是否是某个类或其子类的实例
print(isinstance(child, Child))
print(isinstance(child, Parent))
print(isinstance(parent, Child))

# 使用issubclass()检查一个类是否是另一个类的子类
print(issubclass(Child, Parent))
print(issubclass(Parent, Child))
print(issubclass(Child, Child))


# ===== 6-8.3 =====
def print_greeting(person):
    """这个函数接受一个Parent类型的对象作为参数"""
    print(person.greet())


# 这两个调用都应该正常工作
# 使用Parent实例调用
print_greeting(parent)
# 使用Child实例调用，因为Child继承了greet方法
print_greeting(child)
